﻿//******************************************************************************************************************
//* 程序名：实训5_3.cpp                                                                                            *
//* 主要功能:                                                                                                      *
//*      用二分法求方程x³-2x²-x+2=0在（-5,5）的根——  -1、1、2精度为1e-4                                          *
//******************************************************************************************************************
#include<iostream>                                                                       //包含输入输出接口文件
#include<math.h>
using namespace std;                                                                     //引用标准命名空间
int main()                                                                               //定义主函数
{                                                                                        //主函数开始
	double x1 = -5;
	double x2 = 5;
	double x3 = 0;
	double fx1 = x1 * x1 * x1 - 2 * x1 * x1 - x1 + 2;
	double fx2 = x2 * x2 * x2 - 2 * x2 * x2 - x2 + 2;
	double p = fx1 * fx2;
	if (p >= 0)
	{
		cout << "不能保证区间内有根" << endl;
	}
	else
	{
		do
		{
			x3 = (x1 + x2) / 2;
			if ((x3 * x3 * x3 - 2 * x3 * x3 - x3 + 2) * (x1 * x1 * x1 - 2 * x1 * x1 - x1 + 2) > 0)
				x1 = x3;
			else if ((x3 * x3 * x3 - 2 * x3 * x3 - x3 + 2) * (x1 * x1 * x1 - 2 * x1 * x1 - x1 + 2) < 0)
				x2 = x3;
			else
				cout << "方程的根为：" << x3 << endl;
		} while (fabs(x1 - x2) >= 1e-4);
		cout << "方程的根为：" << x3 << endl;
	}
	return 0;
}                                                                                        //主函数结束